﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IDependencyRegistrar.cs" company="">
//   
// </copyright>
// <summary>
//   The DependencyRegistrar interface.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace Skymate.Engines.DependencyManagement
{
    using Skymate.Core;

    /// <summary>
    ///     The DependencyRegistrar interface.
    /// </summary>
    public interface IDependencyRegistrar
    {
        /// <summary>
        ///     Gets the order.
        /// </summary>
        int Order { get; }

        /// <summary>
        /// Lets the implementor register dependencies withing the global dependency container
        /// </summary>
        /// <param name="builder">
        /// The container builder instance
        /// </param>
        /// <param name="typeFinder">
        /// The type finder instance with wich all application types can be reflected
        /// </param>
        /// <param name="isActiveModule">
        /// Indicates, whether the assembly containing this registrar instance is an active (installed) plugin assembly.
        ///     The value is always <c>true</c>, if the containing assembly is not a plugin type.
        /// </param>
        void Register(IIocManager builder, ITypeFinder typeFinder, bool isActiveModule);
    }
}